btc <- getSymbols(Symbols="BTC-CAD", auto.assign=FALSE)
## remove today
btc <- btc[1:nrow(btc)-1,]
summary(btc)
## Index BTC-CAD.Open BTC-CAD.High BTC-CAD.Low
## Min. :2019-09-18 Min. : 6996 Min. : 7439 Min. : 5721
## 1st Qu.:2020-03-15 1st Qu.:12116 1st Qu.:12342 1st Qu.:11889
## Median :2020-09-10 Median :14898 Median :15137 Median :14762
## Mean :2020-09-10 Mean :28215 Mean :29007 Mean :27358
## 3rd Qu.:2021-03-08 3rd Qu.:44564 3rd Qu.:46275 3rd Qu.:42364
## Max. :2021-09-03 Max. :79624 Max. :81446 Max. :77726
## NA's :4 NA's :4 NA's :4
## BTC-CAD.Close BTC-CAD.Volume BTC-CAD.Adjusted
## Min. : 6931 Min. :1.625e+10 Min. : 6931
## 1st Qu.:12120 1st Qu.:2.990e+10 1st Qu.:12120
## Median :14902 Median :4.382e+10 Median :14902
## Mean :28280 Mean :4.867e+10 Mean :28280
## 3rd Qu.:44604 3rd Qu.:6.135e+10 3rd Qu.:44604
## Max. :79598 Max. :4.471e+11 Max. :79598
## NA's :4 NA's :4 NA's :4
## basic chart_Series from quantmod
chart_Series(Cl(btc))
btc45d <- tail(btc, n=45)
summary(btc45d[,1:4])
## Index BTC-CAD.Open BTC-CAD.High BTC-CAD.Low
## Min. :2021-07-21 Min. :37769 Min. :40989 Min. :37451
## 1st Qu.:2021-08-01 1st Qu.:49832 1st Qu.:51287 1st Qu.:48454
## Median :2021-08-12 Median :56658 Median :58467 Median :55830
## Mean :2021-08-12 Mean :54635 Mean :56284 Mean :53494
## 3rd Qu.:2021-08-23 3rd Qu.:59953 3rd Qu.:61949 3rd Qu.:58957
## Max. :2021-09-03 Max. :63242 Max. :64202 Max. :62110
## BTC-CAD.Close
## Min. :40369
## 1st Qu.:49862
## Median :57028
## Mean :55203
## 3rd Qu.:60098
## Max. :63260
chart_Series(btc45d)
eth <- getSymbols(Symbols="ETH-CAD", auto.assign=FALSE)
## remove today - empty
eth <- eth[1:nrow(eth)-1,]
summary(eth)
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2019-09-18 Min. : 154.6 Min. : 164.6 Min. : 132.5
## 1st Qu.:2020-03-15 1st Qu.: 266.7 1st Qu.: 269.5 1st Qu.: 254.8
## Median :2020-09-10 Median : 500.9 Median : 511.1 Median : 485.1
## Mean :2020-09-10 Mean :1192.0 Mean :1239.3 Mean :1142.1
## 3rd Qu.:2021-03-08 3rd Qu.:2246.6 3rd Qu.:2304.6 3rd Qu.:2142.5
## Max. :2021-09-03 Max. :5050.3 Max. :5267.4 Max. :4693.3
## NA's :4 NA's :4 NA's :4
## ETH-CAD.Close ETH-CAD.Volume ETH-CAD.Adjusted
## Min. : 154.9 Min. :6.923e+09 Min. : 154.9
## 1st Qu.: 266.6 1st Qu.:1.365e+10 1st Qu.: 266.6
## Median : 501.1 Median :2.049e+10 Median : 501.1
## Mean :1198.4 Mean :2.457e+10 Mean :1198.4
## 3rd Qu.:2248.3 3rd Qu.:3.121e+10 3rd Qu.:2248.3
## Max. :5043.1 Max. :1.025e+11 Max. :5043.1
## NA's :4 NA's :4 NA's :4
## basic chart_Series from quantmod
chart_Series(Cl(eth))
eth90d <- tail(eth, n=90)
summary(eth90d[,1:4])
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2021-06-06 Min. :2226 Min. :2274 Min. :2114
## 1st Qu.:2021-06-28 1st Qu.:2655 1st Qu.:2734 1st Qu.:2564
## Median :2021-07-20 Median :2949 Median :3064 Median :2851
## Mean :2021-07-20 Mean :3175 Mean :3289 Mean :3067
## 3rd Qu.:2021-08-11 3rd Qu.:3902 3rd Qu.:4055 3rd Qu.:3754
## Max. :2021-09-03 Max. :4828 Max. :5033 Max. :4693
## ETH-CAD.Close
## Min. :2229
## 1st Qu.:2658
## Median :2946
## Mean :3195
## 3rd Qu.:3933
## Max. :4936
chart_Series(eth90d)
eth45d <- tail(eth, n=45)
summary(eth45d[,1:4])
## Index ETH-CAD.Open ETH-CAD.High ETH-CAD.Low
## Min. :2021-07-21 Min. :2264 Min. :2544 Min. :2231
## 1st Qu.:2021-08-01 1st Qu.:3144 1st Qu.:3286 1st Qu.:3065
## Median :2021-08-12 Median :3928 Median :4058 Median :3760
## Mean :2021-08-12 Mean :3643 Mean :3784 Mean :3547
## 3rd Qu.:2021-08-23 3rd Qu.:4087 3rd Qu.:4166 3rd Qu.:3979
## Max. :2021-09-03 Max. :4828 Max. :5033 Max. :4693
## ETH-CAD.Close
## Min. :2503
## 1st Qu.:3164
## Median :3933
## Mean :3702
## 3rd Qu.:4095
## Max. :4936
chart_Series(eth45d)
kryptos <- merge(btc, eth, join='outer', fill=NA)
kryptos2017 <- kryptos['2017-01-01/']
chart_Series(kryptos[,c(4,8)])
kryptos_all <- kryptos
kryptos <- kryptos["2017-01-01/"]
chart.Correlation(kryptos[,c(4,10)], histogram=TRUE)
df_kryptos <- as.data.frame(kryptos)
df_kryptos$date <- row.names(df_kryptos)
df_kryptos %>% ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()
df_kryptos <- df_kryptos %>% mutate(
yr=year(date),
mth=month(date)
)
df_kryptos %>% ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(yr)))+geom_point()
Correlations vary by year. Of most relevance in most recent yr correlation.
df_kryptos_2020 <- df_kryptos %>% filter(date>='2020-01-01' & date<='2020-12-31')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(mth)))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point(aes(color=as.factor(mth)))+
geom_smooth(method='lm')
chart.Correlation(df_kryptos_2020[,c(2,3,4,5,8,9,10,11)], histogram=TRUE)
df_kryptos_2021 <- df_kryptos %>% filter(date>='2021-01-01' & date<='2021-12-31')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close, color=as.factor(mth)))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021 %>%
ggplot(aes(x=BTC.CAD.Close, y=ETH.CAD.Close))+geom_point(aes(color=as.factor(mth)))+
geom_smooth(method='lm')
df_kryptos_2020 %>% ggplot(aes(x=as.factor(mth), y=BTC.CAD.Close))+geom_boxplot()
df_kryptos_2020 %>% ggplot(aes(x=as.factor(mth), y=ETH.CAD.Close))+geom_boxplot()
kryptos2020 <- kryptos_all["2020-01-01/2020-12-31"]
kryptos2020_btc_ret <- dailyReturn(kryptos2020$BTC.CAD.Close)
dygraph(kryptos2020_btc_ret)
kryptos2020_btc_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2020_btc_ret))
kryptos2020 <- kryptos_all["2020-01-01/2020-12-31"]
kryptos2020_eth_ret <- dailyReturn(kryptos2020$ETH.CAD.Close)
dygraph(kryptos2020_eth_ret)
kryptos2020_eth_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2020_eth_ret))
kryptos2020_ret <- merge(kryptos2020_btc_ret, kryptos2020_eth_ret, join='outer', fill=NA)
dygraph(kryptos2020_ret)
## convert to data frame for scatterplots etc
df_kryptos_2020_ret <- as.data.frame(kryptos2020_ret)
colnames(df_kryptos_2020_ret) <- c("BTC_ret","ETH_ret")
ggplot(df_kryptos_2020_ret, aes(x=BTC_ret, y=ETH_ret))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2020_ret %>% ggplot(aes(x=BTC_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2020_ret$BTC_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2020_ret$BTC_ret), color='green')+
geom_vline(xintercept=0-sd(df_kryptos_2020_ret$BTC_ret), color='blue')+
geom_text(aes(label=round(sd(BTC_ret),3)), color='blue',
x=sd(df_kryptos_2020_ret$BTC_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(BTC_ret),3)), color='blue',
x=mean(df_kryptos_2020_ret$BTC_ret), y=100, hjust= -0.2)
df_kryptos_2020_ret %>% ggplot(aes(x=ETH_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2020_ret$ETH_ret), color='blue')+
geom_vline(xintercept=0-sd(df_kryptos_2020_ret$ETH_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2020_ret$ETH_ret), color='green')+
geom_text(aes(label=round(sd(ETH_ret),3)), color='blue',
x=sd(df_kryptos_2020_ret$ETH_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(ETH_ret),3)), color='green',
x=mean(df_kryptos_2020_ret$ETH_ret), y=100, hjust= -0.2)
df_kryptos_2021 %>% ggplot(aes(x=as.factor(mth), y=BTC.CAD.Close))+geom_boxplot()
df_kryptos_2021 %>% ggplot(aes(x=as.factor(mth), y=ETH.CAD.Close))+geom_boxplot()
kryptos2021 <- kryptos_all["2021-01-01/2021-12-31"]
kryptos2021_btc_ret <- dailyReturn(kryptos2021$BTC.CAD.Close)
dygraph(kryptos2021_btc_ret)
kryptos2021_btc_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2021_btc_ret))
kryptos2021 <- kryptos_all["2021-01-01/2021-12-31"]
kryptos2021_eth_ret <- dailyReturn(kryptos2021$ETH.CAD.Close)
dygraph(kryptos2021_eth_ret)
kryptos2021_eth_ret %>% ggplot(aes(x=.))+geom_histogram()+
geom_vline(xintercept = mean(kryptos2021_eth_ret))
kryptos2021_ret <- merge(kryptos2021_btc_ret, kryptos2021_eth_ret, join='outer', fill=NA)
dygraph(kryptos2021_ret)
## convert to data frame for scatterplots etc
df_kryptos_2021_ret <- as.data.frame(kryptos2021_ret)
colnames(df_kryptos_2021_ret) <- c("BTC_ret","ETH_ret")
ggplot(df_kryptos_2021_ret, aes(x=BTC_ret, y=ETH_ret))+geom_point()+
geom_smooth(method='lm')
df_kryptos_2021_ret %>% ggplot(aes(x=BTC_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2021_ret$BTC_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2021_ret$BTC_ret), color='green')+
geom_vline(xintercept=0-sd(df_kryptos_2021_ret$BTC_ret), color='blue')+
geom_text(aes(label=round(sd(BTC_ret),3)), color='blue',
x=sd(df_kryptos_2021_ret$BTC_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(BTC_ret),3)), color='blue',
x=mean(df_kryptos_2021_ret$BTC_ret), y=100, hjust= -0.2)
df_kryptos_2021_ret %>% ggplot(aes(x=ETH_ret))+geom_histogram()+
geom_vline(xintercept=sd(df_kryptos_2021_ret$ETH_ret), color='blue')+
geom_vline(xintercept=0-sd(df_kryptos_2021_ret$ETH_ret), color='blue')+
geom_vline(xintercept=mean(df_kryptos_2021_ret$ETH_ret), color='green')+
geom_text(aes(label=round(sd(ETH_ret),3)), color='blue',
x=sd(df_kryptos_2021_ret$ETH_ret), y=70, hjust= -0.1)+
geom_text(aes(label=round(mean(ETH_ret),3)), color='green',
x=mean(df_kryptos_2021_ret$ETH_ret), y=100, hjust= -0.2)
At the end of the day…what matters is what your return is at the end of the day. :)
df_kryptos_2021ytd <- df_kryptos_2021 %>% filter(date==min(date) | date==max(date)) %>% select(date, yr, mth, BTC.CAD.Close, ETH.CAD.Close) %>%
mutate(BTC.CAD.ret=BTC.CAD.Close/lag(BTC.CAD.Close)-1,
ETH.CAD.ret=ETH.CAD.Close/lag(ETH.CAD.Close)-1)
df_kryptos_2021ytd_lg <- df_kryptos_2021ytd %>%
filter(date==max(date)) %>%
select(date, yr, mth, BTC.CAD.ret, ETH.CAD.ret) %>%
pivot_longer(cols=c(4:5),
names_to='coin',
values_to='ytd_return')
df_kryptos_2021ytd_lg %>% ggplot(aes(x=coin, y=ytd_return))+
geom_col()+
scale_y_continuous(labels=percent)
df_kryptos_2021ytd[,c(4:7)]
## BTC.CAD.Close ETH.CAD.Close BTC.CAD.ret ETH.CAD.ret
## 2021-01-01 37393.09 929.7528 NA NA
## 2021-09-03 62659.28 4935.8169 0.6756915 4.308741
ccurrency <- c("BTC-CAD", "ETH-CAD","LTC-CAD","BCH-CAD")
kryptos_multi <- NULL
for(c in ccurrency){
kryptos_multi <- cbind(kryptos_multi,
getSymbols(Symbols=c,
from='2018-01-01', periodicity='daily',
auto.assign = FALSE)[,4])
}
chart.Correlation(kryptos_multi, histogram=TRUE)